1. 下载SDK
官网SDK&Demo下载进行解压,解压后包含:
IDaaSDoraemonSDK.framework(安全认证静态库)
具体认证服务SDK,包括:手机号认证,生物识别(IFAA)
2. 前期准备
2.1 准备工作
请确保已在安全认证控制台创建应用,并开启生物识别(IFAA)服务。
2.2 接入流程
2.3 运行demo工程
解压后包含DoraemonDemo工程, 需要将bundleID 、应用密钥修改为你的应用密钥。
2.4 搭建开发环境
运行环境:iOS 11.0+平台上。
支持语言:Object-C、Swift
2.4.1 添加主库
Targets->General->Linked Frameworks and Libraries 中添加主库
IDaaSDoraemonSDK.framework
如果应用授权了认证方式,添加额外的认证方式主库:
首先 Targets->General->Linked Frameworks and Libraries 中添加主库
IFAAAuthenticator.framework
etasSdk.framework
APOpenSSL.framework
APSecCrypto.framework
然后 Targets->General->Linked Frameworks and Libraries 中添加系统库
Security.framework
AVFoundation.framework
LocalAuthentication.framework
Foundation.framework
libc++.tbd
最后 Targets->Build Phases->Copy Bundle Resources 中添加资源文件
etasSdk.bundle
如果项⽬之前集成的有其他openssl,在发⽣冲突时可以删除APOpenSSL.framework保留其他的openssl;
如果项⽬之前有集成⽀付宝AlipaySDK.framework,会与APSecCrypto.framework产⽣冲突,需删除APSecCrypto.framework。
2.4.2 Target->BuildSettings设置
Xcode 中还需要进行设置,Targets->BuildSettings 中 , Other Linker Flags增加-ObjC,⼀定要添加此选项,注意是⼤写C,不是⼩写c,否则⼯程运⾏会crash!
3. IFAA认证SDK 方法说明
3.1 主类IDaaSDoraemonManager接⼝简介
3.1.1 获取认证实例(sharedInstance)
/**
* 函数名:sharedInstance
* @param ⽆
* 返回:获取该类的单例实例对象
*/
+ (instancetype _Nonnull )sharedInstance;
3.1.2 获取sdk版本号(getVersion)
/**
* 函数名:getVersion
* @param ⽆
* 返回:字符串,sdk版本号
*/
- (NSString *_Nonnull)getVersion;
3.1.3 初始化应用支持的认证服务-(SDKInitWithApplicationExternalId)
/**
* 安全认证服务初始化
* @param applicationExternalId 应用外部ID
* @param appKey 应用密钥
* @param complete 结果回调到主线程
*/
-(void)SDKInitWithApplicationExternalId:(NSString *)applicationExternalId appKey:(NSString *)appKey complete:(void (^)(NSDictionary *resultDic))complete;
3.1.4 获取access_token
此接口需要开发者调用服务端SDK的获取应用授权Token接口,回传给移动端SDK。
/** 获取token */
@property (nonatomic,copy) NSDictionary *(^fetchAccessTokenCallBack)(NSString *mobileExtendParamsJson, NSString *mobileExtendParamsJsonSign);
3.2 SDK返回码
枚举值 | 值 | 业务意义 |
IFAA_SUCCESS | 0 | 成功 |
IFAA_STATUS_SUPPORT_OTHERS | 1 | ⽀持除指纹/⼈脸以外的认证类型,如pin/⼿势等 |
IFAA_STATUS_NOT_ENROLLED | 4 | 终端没有录⼊指纹/⼈脸(此时可以引导⽤户去录⼊指纹/⼈脸再做操作) |
IFAA_STATUS_PASSCODE_NOT_SET | 7 | 尚未设置屏幕锁密码 (IFAA 需要设置屏幕锁后才能进⾏,否则不安全,此处可引导⽤户去设置屏幕锁) |
IFAA_CLIENT_ERROR | 8 | 本地执⾏异常 |
IFAA_SERVER_ERROR | 9 | 服务器错误 |
IFAA_POLICY_REJECTED | 12 | 被⻛险策略拒绝时 |
IFAA_USER_REJECTED | 13 | ⽤户被禁⽤时 |
IFAA_APPID_NOT_FOUND | 14 | 应⽤⽩名单中未设置应⽤标识 |
IFAA_DEVICE_MODEL_NOT_FOUND | 15 | 设备型号不存在 |
IFAA_SIGNATURE_FAIL | 16 | 未获取到签名数据 |
IFAA_STATUS_DELETED | 17 | 本地指纹已经注册,但是注册的指纹模组数据已经被删除(Android独有) |
IFAA_CLIENT_ERROR_MULTI_FP_NOT_SUPP ORT | 18 | 此⼿机不⽀持多指位(Android独有) |
IFAA_STATUS_RESULT_CANCELED | 19 | ⽤户取消 |
IFAA_STATUS_RESULT_TIMEOUT | 20 | 超时(Android独有) |
IFAA_STATUS_RESULT_AUTH_FAIL | 21 | 验证失败,系统指纹不匹配 |
IFAA_STATUS_RESULT_SYSTEM_BLOCK | 22 | 连续多次校验失败,指纹校验被暂时锁定(暂时Android独有) |
IFAA_STATUS_RESULT_FALLBACK | 23 | 点击了 FALLBACK 按钮 |
IFAA_STATUS_RESULT_TEE_ERROR | 24 | TEE 错误(Android独有) |
IFAA_STATUS_RESULT_SYSTEM_ERROR | 25 | ⼿机系统问题,请升级系统版本(Android独有) |
IFAA PERMISSION DENIED | 26 | -Android:当前设备未获取相机权限 |
IFAA_AUTHENTICATOR_DISABLE | 27 | -IOS:当前应⽤未获取FaceID权限 |
IFAA_AUTHENTICATOR_NOT_FOUND | 28 | 认证器被禁⽤ |
IFAA_DEVICE_KEY_NOT_FOUND | 29 | 未找到相应的认证器 |
IFAA_PROTECT_PAYLOAD_NOT_MATCH | 30 | 设备密钥被禁⽤ |
4. 认证示例
4.1 IFAA注册/认证
4.1.1 IFAA认证器-注册
[[IDaaSDoraemonManager sharedInstance]authenticatorServiceWithAuthMethod:@"IFAA" action:DoraemonAuthTypeRegister userId:@"zhangsan"complete:^(NSDictionary *resultDic) {
HKLog(@"IFAA认证器-注册结果 %@",resultDic);
}];
4.1.2 IFAA认证器-认证
[[IDaaSDoraemonManager sharedInstance]authenticatorServiceWithAuthMethod:@"IFAA" action:DoraemonAuthTypeAuth userId:@"zhangsan"complete:^(NSDictionary *resultDic) {
NSLog(@"IFAA认证器-认证结果 %@",resultDic);
}];
4.2 校验JwtToken
最后需要校验JwtToken来确保此次认证结果真实有效。